package com.hhf.springboot.model.dto.ai;

import lombok.Data;

import java.util.List;

@Data
public class AiBody {
    /**
     * -2.0 和 2.0 之间的数字。正值会根据新标记在文本中的现有频率对其进行惩罚，从而降低模型逐字重复同一行的可能性。
     */
    private Long frequencyPenalty;
    /**
     * 修改指定标记出现在完成中的可能性。 接受一个 json 对象，该对象将标记（由标记器中的标记 ID 指定）映射到从 -100 到 100
     * 的关联偏差值。从数学上讲，偏差会在采样之前添加到模型生成的 logits 中。确切的效果因模型而异，但 -1 和 1 之间的值应该会减少或增加选择的可能性；像 -100 或
     * 100 这样的值应该导致相关令牌的禁止或独占选择。
     */
    private Object logitBias;
    /**
     * 最大回复，聊天完成时生成的最大Tokens数量。 输入标记和生成标记的总长度受模型上下文长度的限制。
     */
    private Double maxTokens;
    private List<BodyMessage> messages;
    /**
     * 模型名称
     */
    private String model;
    /**
     * 为每个输入消息生成多少个聊天完成选项。
     */
    private Double n;
    /**
     * -2.0 和 2.0 之间的数字。正值会根据到目前为止是否出现在文本中来惩罚新标记，从而增加模型谈论新主题的可能性。
     */
    private Long presencePenalty;
    /**
     * 流式输出，流式输出或非流式输出
     */
    private Boolean stream;
    /**
     * 温度，使用什么采样温度，介于 0 和 2 之间。较高的值（如 0.8）将使输出更加随机，而较低的值（如 0.2）将使输出更加集中和确定。
     * 我们通常建议改变这个或`top_p`但不是两者同时使用。
     */
    private Long temperature;
    /**
     * 一种替代温度采样的方法，称为核采样，其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。
     * 我们通常建议改变这个或`temperature`但不是两者同时使用。
     */
    private Long topP;
    /**
     * 代表您的最终用户的唯一标识符，可以帮助 OpenAI
     * 监控和检测滥用行为。[了解更多](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids)
     */
    private String user;
}